home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / TUTORIAL / 1307B.ZIP / COROUT2.MOD < prev    next >
Text File  |  1989-01-18  |  2KB  |  68 lines

  1.                                         (* Chapter 15 - Program 2 *)
  2. MODULE Corout2;
  3.  
  4. FROM InOut IMPORT WriteCard, WriteString, WriteLn;
  5.  
  6. FROM SYSTEM IMPORT WORD, PROCESS, ADR, SIZE,
  7.                    NEWPROCESS, TRANSFER;
  8.  
  9. VAR  main, Process1, Process2 : PROCESS;
  10.      WorkSpace1, WorkSpace2   : ARRAY[1..300] OF WORD;
  11.      Index : CARDINAL;
  12.  
  13. PROCEDURE WriteStuff;
  14. BEGIN
  15.    WriteString('This is loop');
  16.    WriteCard(Index,2);
  17. END WriteStuff;
  18.  
  19. PROCEDURE MainProcess;
  20. BEGIN
  21.    FOR Index := 1 TO 5 DO
  22.       WriteStuff;
  23.       IF Index > 2 THEN
  24.          TRANSFER(Process1,Process2);
  25.          WriteString(' and back to main loop');
  26.       END;
  27.       WriteLn;
  28.    END;
  29.    WriteString('End of the MainProcess loop');
  30.    WriteLn;
  31.    TRANSFER(Process1,main);
  32. END MainProcess;
  33.  
  34. PROCEDURE SubProcess;
  35. BEGIN
  36.    LOOP
  37.       WriteString(' in SubProcess');
  38.       TRANSFER(Process2,Process1);
  39.       WriteString(' back');
  40.    END;
  41. END SubProcess;
  42.  
  43. BEGIN   (* Main Module Body *)
  44.    NEWPROCESS(MainProcess,ADR(WorkSpace1),SIZE(WorkSpace1),
  45.               Process1);
  46.    NEWPROCESS(SubProcess,ADR(WorkSpace2),SIZE(WorkSpace2),
  47.               Process2);
  48.    TRANSFER(main,Process1);
  49.    WriteString('End of the program');
  50.    WriteLn;
  51. END Corout2.
  52.  
  53.  
  54.  
  55.  
  56. (* Result of execution
  57.  
  58. This is loop 1
  59. This is loop 2
  60. This is loop 3 in SubProcess and back to main loop
  61. This is loop 4 back in SubProcess and back to main loop
  62. This is loop 5 back in SubProcess and back in main loop
  63. End of the MainProcess loop
  64. End of the program
  65.  
  66. *)
  67.  
  68.